/**
 * 
 */
package ipebg.mzk.facade.system.service;

import ipebg.mzk.common.util.Page;

import java.io.Serializable;
import java.util.Map;

 

/**
 * @Descrition 分页查询接口
 * 
 * @author 
 * 
 * @Date: 2010/12/6
 * 
 */
public interface PagerService<T> {

	/**
	 * 自定义SQL分页查询
	 * 
	 * @param pageNo
	 * @param pageSize
	 * @param hql
	 * @param map
	 * @param t
	 * @return
	 */
	public Page findPageByQuery(int pageNo, int pageSize, String hql,
			Map<Serializable, Serializable> map, T t);

	
	
	
	/**
	 * sql page query
	 * @param pageNo
	 * @param pageSize
	 * @param sql
	 * @return
	 */
	public Page findPageBySqlQuery(int pageNo, int pageSize, String sql);
	
	


	public Page findPageByCriteria(int pageNo, int pageSize, Map map, T t,String userId);
	/**
	 * 对orderStr进行排序的分页查询
	 * 
	 * @param pageNo
	 * @param pageSize
	 * @param map
	 * @param t
	 * @param orderStr
	 * @param flag
	 * @return
	 */
	public Page findPageByCriteria(int pageNo, int pageSize, @SuppressWarnings("rawtypes") Map map, T t,
			String orderStr, String flag);

	/**
	 * 对多个字段进行排序的分页查询
	 * 
	 * @param pageNo
	 * @param pageSize
	 * @param map
	 * @param t
	 * @param orderStrs
	 * @param flag
	 * @return
	 */
	public Page findPageByCriteria(int pageNo, int pageSize, @SuppressWarnings("rawtypes") Map map, T t,
			String[] orderStrs, String flag);

	/**
	 * @param i
	 * @param defaultPageSize
	 * @param map
	 * @param caseTask
	 * @param strings
	 * @param string
	 * @return
	 */
	public Page findPageByCriteriaWithNull(int pageNo, int defaultPageSize,
			@SuppressWarnings("rawtypes") Map map, T t, String[] orderStrs, String flag);

	/**
	 * 
	 * @param pageNo
	 * @param pageSize
	 * @param map
	 * @param t
	 * @param orderStrs
	 * @param flag
	 * @return
	 */
	public Page findPageByCriteriaAndIn(int pageNo, int pageSize, @SuppressWarnings("rawtypes") Map map, T t,
			String[] orderStrs, String flag);
	
	
	/**
	 * 
	 * @param pageNo
	 * @param pageSize
	 * @param map
	 * @param t
	 * @param orderStrs
	 * @param flag
	 * @return
	 */
	public Page findPageByCriteriaAndInLike(int pageNo, int pageSize, @SuppressWarnings("rawtypes") Map map, T t,
			String[] orderStrs, String flag);
	
	
	

	/**
	 * @param i
	 * @param defaultPageSize
	 * @param map
	 * @param evaluateTask
	 * @param strings
	 * @param string
	 * @return
	 */
	public Page findPageByCriteriaOneMonth(int pageNo, int pageSize, @SuppressWarnings("rawtypes") Map map ,T t,
			String[] orderStrs, String flag);
	
	/**
	 * add by tony for multi-column sort
	 * @param pageNo
	 * @param pageSize
	 * @param map
	 * @param cls
	 * @param sql
	 * @return
	 */
	Page findPageBySqlRestrictionCriteria(final int pageNo, final int pageSize,
			@SuppressWarnings("rawtypes") final Map map, @SuppressWarnings("rawtypes") final Class cls, final String sql);




	Page findPageByhqlQuery(int pageNo, int pageSize, String hql);



    Page findPageBySqlQuery2Map(int pageNo, int pageSize, String sql);
	<E> Page findPageBySqlQuery2Entity(Class<E> cls,int pageNo, int pageSize, String sql);

	Page findPageByHqlQuery2Map(int pageNo, int pageSize, String sql);

	<E> Page findPageByHqlQuery2Entity(Class<E> cls,int pageNo, int pageSize, String sql);

    

}
